<?php

class Controller_Cars extends Controller_Base
{
	public function __construct($parts) {		
		$this->parts        = $parts;
		$this->common_vars  = Registry::get("common_vars");
		$this->table_module = PRFX."cars";
		//$this->to_error_404 = false;	
		self::vars();
		if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) ? $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' : false) {	
			self::getAjax();
		}
	}
	
	public function getAjax()
	{
		/*
		 * Получаем главное изображение активного раздела :: Обзор
		 */
//		if(!empty($_POST["id_highlight_section"])) {
//			header("Content-Type: text/json; charset=utf-8");
//			$r =& Registry::get("MDB")->query("SELECT `ID`,`Color_text`,`Text_banner`,`Stext` FROM `".$this->table_module."` WHERE `Sys_name`='".$_POST["id_highlight_section"]."' AND `Show`='1' LIMIT 1");
//			if (PEAR::isError($r)) {
//				die($r->getMessage().' ::: '.$r->getUserInfo());
//			}
//			if($r->numRows())
//			{
//				$p = $r->fetchRow(MDB2_FETCHMODE_ASSOC);
//				$out["image_original"] = functions::getImage("cars", $p["id"], '', 1, "highlights_main_original.jpg", "background", "md5");
//				$out["name"]           = $p["text_banner"];
//				$out["marketingshort"] = $p["stext"];
//				$out["color_text"]     = $p["color_text"];
//				/* Хайлайты текущего раздела @array */
//				$out["highlights"] = self::getHighlightParam($p["id"]);
//			}
//			exit(getJSON($out));				
//		}
		/*
		 * Получаем главное изображение активного раздела :: Обзор
		 */
//		elseif(!empty($_POST["id_popup_section"])) {
//			header("Content-Type: text/json; charset=utf-8");
//			$r =& Registry::get("MDB")->query("SELECT `ID`,`Name`,`Btext` FROM `".$this->table_module."` WHERE `Sys_name`='".$_POST["id_popup_section"]."' AND `Show`='1' LIMIT 1");
//			if (PEAR::isError($r)) {
//				die($r->getMessage().' ::: '.$r->getUserInfo());
//			}
//			if($r->numRows())
//			{
//				$p = $r->fetchRow(MDB2_FETCHMODE_ASSOC);
//				$out["image_original"] = functions::getImage("cars", $p["id"], '', 1, "highlights_popup_original.jpg", "background", "md5");
//				$out["name"]           = $p["name"];
//				$out["btext"]          = $p["btext"];
//				exit(getJSON($out));
//			}
//		}
		/*
		 * Подбор авто :: Главная моделей
		 */
//		elseif(!empty($_POST["finder_main_car"]))
//		{
//			header("Content-Type: text/json; charset=utf-8");
//			if(is_array($_POST["body_type"]))	{
//				foreach($_POST["body_type"] as $Value) {
//					if(is_numeric($Value)) {
//						$SqlQuery[] = "`Body`='".$Value."'";
//					}
//				}				
//				if(is_array($SqlQuery)) {
//					$SqlQueryString[] = "(".implode(" OR ", $SqlQuery).")";
//				}
//			}
//			if(is_array($_POST["doors_num"])) {
//				unset($SqlQuery);
//				foreach($_POST["doors_num"] as $Value) {
//					if(is_numeric($Value)) {
//						$SqlQuery[] = "`Doors`='".$Value."'";
//					}
//				}				
//				if(is_array($SqlQuery)) {
//					$SqlQueryString[] = "(".implode(" OR ", $SqlQuery).")";
//				}
//			}
//			
//			if(is_array($SqlQueryString)) {
//				$SqlQueryStringImplode = implode(" AND ", $SqlQueryString);
//			}			
//			$r =& Registry::get("MDB")->query("SELECT `Sys_name` FROM `".$this->table_module."` WHERE `Parent`='0' AND `Show`='1' ".(!empty($SqlQueryStringImplode) ? " AND ".$SqlQueryStringImplode : '')." ORDER BY `Por`");
//			if (PEAR::isError($r)) {
//				die($r->getMessage().' ::: '.$r->getUserInfo());
//			}
//			if($r->numRows())
//			{
//				while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
//					$Array[] = $p["sys_name"];
//				}			
//			}
//			exit(getJSON($Array));
//		}
	}	
	
	/* Загрузка хайлайтов */
//	public function getHighlightParam($id) {
//		$r =& Registry::get("MDB")->query("SELECT `ID`,`Name`,`Sys_name`,`Stext`,`Btext`,`Pos_x`,`Pos_y` FROM `".$this->table_module."` WHERE `Parent`='".$id."' AND `Show`='1' ORDER BY `Por`");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if($r->numRows()) {
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC))
//			{
//				$out[$p["id"]]["image_trumbnail"] = functions::getImage("cars", $p["id"], '', 1, "215x102_highlights_popup_trumbnail.jpg", "background", "md5");
//				if(!empty($p["btext"])) {
//					$out[$p["id"]]["sys_name"] = $p["sys_name"];
//				}
//				$out[$p["id"]]["name"]            = $p["name"];
//				$out[$p["id"]]["stext"]           = $p["stext"];
//				$out[$p["id"]]["pos_x"]           = $p["pos_x"];
//				$out[$p["id"]]["pos_y"]           = $p["pos_y"];				
//			}
//			return $out;
//		}
//	}
	
	public function getDependantsCatalog($active_id)
	{
		$dependences = array();		
		$r =& Registry::get("MDB")->query("SELECT * FROM `".$this->table_module."` WHERE `ID`='".$active_id."' AND `Show`='1' ORDER BY `Por`");		
		if (PEAR::isError($r)) {
			die($r->getMessage().' ::: '.$r->getUserInfo());
		}		
		while ($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC))
		{
			$dependences[] = $p;				
			$depen         = self::getDependantsCatalog($p['parent']);				
			$dependences   = array_merge_recursive($depen, $dependences);
		}		
		return $dependences;
	}
	
	/*
	  Инициализация переменных
	  @return object, array
	*/
	public function getSubmenuModel($active_id)
	{
		$r =& Registry::get("MDB")->query("SELECT `Sys_name`,`Name`,`Redirect` FROM `".$this->table_module."` WHERE `Parent`='".$active_id."' AND `Show`='1' ORDER BY `Por`");		
		if (PEAR::isError($r)) {
			die($r->getMessage().' ::: '.$r->getUserInfo());
		}
		if($r->numRows())
		{	
			while ($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
				$p["is_active"] = (($this->parts[3] == $p["sys_name"]) ? 1 : 0);
				$p["sys_name"] = '/cars/'.$this->parts[2].'/'.$p["sys_name"].ENDURL;				
				$arr[] = $p;
			}
			return $arr;
		}
	}
	/* 
	 * Проверка основного раздела 
	 * независимо от конечной секции URL
	 * @return string
	 */
	private function checkEndParts()
	{		
		(array)$array_level = explode("?", $_SERVER['REQUEST_URI']);
		$array_level = explode("/", $array_level[0]);
		unset($array_level[0]);
		$array_level = array_reverse($array_level);		
		if(!empty($array_level)) {
			foreach($array_level as $Key => $Sys_name_parts)
			{
				$Sys_name_parts = str_replace(ENDURL, "", $Sys_name_parts);
				$r =& Registry::get("MDB")->query("SELECT `ID` FROM `".$this->table_module."` WHERE `Sys_name` = '".$Sys_name_parts."' AND `Show`='1' LIMIT 1;");		
				if (PEAR::isError($r)) {
					die($r->getMessage().' ::: '.$r->getUserInfo());
				}
				if($r->numRows()) {
					return $Sys_name_parts;					
				} 
				/* 
				 * Если установлена опция перебрасывания на 
				 * существующий раздел + запись ошибки 404
				 */
				/*elseif($this->to_error_404) {
					unset($array_level[$Key]);
					echo implode("/", $array_level);
				}*/				
			}
		}
		return false;
	}
	
	/*
	  Инициализация переменных
	  @return object, array
	*/	
	public function vars()
	{
		$url = self::checkEndParts();
		if(!empty($url))
		{			
			$r =& Registry::get("MDB")->query("SELECT * FROM `".$this->table_module."` WHERE `Sys_name` = '".$url."' AND `Show`='1' LIMIT 1;");		
			if (PEAR::isError($r)) {
				die($r->getMessage().' ::: '.$r->getUserInfo());
			}
			if ($r->numRows()) {
				$this->getFieldsArray = $r->fetchRow(MDB2_FETCHMODE_ASSOC);
			} 
			else {
				// $e = new Error404;
			}		
			$this->active_id   = $this->getFieldsArray['id'];
			$this->typerazd    = $this->getFieldsArray['typerazd'];
			$this->dependences = self::getDependantsCatalog($this->active_id);
		}
		else
		{
			$this->active_id = 0;
		}
	}
	
	/* 
	 * Главная моделей
	 */
	public function main_cars() 
	{
		$r = & Registry::get("MDB")->query("SELECT `Name`,`ID`,`Sys_name`,`Worth` FROM `".$this->table_module."` WHERE `Show` = '1' AND `Parent`='0' ORDER BY `Por`;");
		if (PEAR::isError($r)) {
			die($r->getMessage().' ::: '.$r->getUserInfo());
		}
		if ($r->numRows())
		{			
			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {						
				$param[] = array(
					"name"     => $p["name"],
					"sys_name" => $p["sys_name"],
					"worth"    => $p["worth"],
					/*"submenu"  => self::getSubSectionCar($p["id"]),*/
					"complete_sys_name" => self::findComplete($p["id"]),
					"image"    => functions::getImage("cars", $p["id"], $p["name"], 1, "200x98_model_trumbnail.jpg", "normal", "md5")
				);
			}
			return $param;
		}
	}
	private function findComplete($id) {
		$r = & Registry::get("MDB")->query("SELECT `Sys_name` FROM `".$this->table_module."` WHERE `Show` = '1' AND `Parent`='".$id."' AND `Name` LIKE '%Комплектац%' LIMIT 1;");
		if (PEAR::isError($r)) {
			die($r->getMessage().' ::: '.$r->getUserInfo());
		}
		if ($r->numRows()) {
			$p = $r->fetchRow(MDB2_FETCHMODE_ASSOC);		
			return $p["sys_name"];
		}
	}
	
	
	
	/* 
	 * Селект моделей
	 */
	public function select_cars() 
	{
		$r = & Registry::get("MDB")->query("SELECT `Name`,`Sys_name` FROM `".$this->table_module."` WHERE `Show` = '1' AND `Parent`='0' ORDER BY `Por`;");
		if (PEAR::isError($r)) {
			die($r->getMessage().' ::: '.$r->getUserInfo());
		}
		if ($r->numRows())
		{			
			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
				$param[] = $p;
			}
			return $param;
		}
	}
	
	
		
	/*public function getSubSectionCar($id) {
		$r = & Registry::get("MDB")->query("SELECT UPPER(Name) as Name,`ID`,`Sys_name` FROM `".$this->table_module."` WHERE `Show` = '1' AND `Parent`='".$id."' ORDER BY `Por`;");
		if (PEAR::isError($r)) {
			die($r->getMessage().' ::: '.$r->getUserInfo());
		}
		if ($r->numRows()) {			
			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {				
				$param[] = $p;
			}
			return $param;
		}
	}*/
	
	
	/* 
	 * Получаем список категорий по которым есть авто
	 */
//	public function groupBodyForConfigurator()
//	{
//		$r = & Registry::get("MDB")->query("SELECT 
//			lists.Value,
//			lists.Name 
//		 FROM 
//		 	".Registry::get("DB_NAME").".".$this->table_module.",
//			".Registry::get("DB_NAME").".lists
//		WHERE 
//			".$this->table_module.".Show = '1' AND 
//			".$this->table_module.".Parent='0' AND 
//			lists.Parent = '35' AND 
//			".$this->table_module.".Body = lists.Value 
//		GROUP BY 
//			".$this->table_module.".Body;");
//			
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows())
//		{
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)){
//				$arr[$p["value"]] = $p["name"];
//			}
//			return $arr;
//		}
//	}
	
	/* 
	 * Получаем список колво дверей по которым есть авто
	 */
//	public function groupDoorsForConfigurator()
//	{
//		$r = & Registry::get("MDB")->query("SELECT 
//			lists.Value,
//			lists.Name 
//		 FROM 
//		 	".Registry::get("DB_NAME").".".$this->table_module.",
//			".Registry::get("DB_NAME").".lists
//		WHERE 
//			".$this->table_module.".Show = '1' AND 
//			".$this->table_module.".Parent='0' AND 
//			lists.Parent = '37' AND 
//			".$this->table_module.".Doors = lists.Value 
//		GROUP BY 
//			".$this->table_module.".Doors;");
//			
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows())
//		{
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)){
//				$arr[$p["value"]] = $p["name"];
//			}
//			return $arr;
//		}
//	}
	
	/* 
	 * Галерея
	 */
	public function getGalleryParam()
	{
		for($i=1;$i<=25;$i++)
		{
			/* Галерея */
			$image_tmp = functions::getImage("cars", $this->getFieldsArray["id"], '', $i, "gallery_original.jpg", "background", "md5");
			if(!empty($image_tmp)) {
				$image["big"][$i] = $image_tmp;
			}
			unset($image_tmp);
			$image_tmp = functions::getImage("cars", $this->getFieldsArray["id"], '', $i, "_120x62_gallery_trumbnail.jpg", "background", "md5");
			if(!empty($image_tmp)) {
				$image["small"][$i] = $image_tmp;
			}
		}
		return $image;		
	}
	
	/* 
	 * Обзор
	 */
//	public function getHighlightsParam() {
//		$r = & Registry::get("MDB")->query("SELECT `Name`,`ID`,`Sys_name`,`Text_banner`,`Stext`,`Color_text` FROM `".$this->table_module."` WHERE `Show` = '1' AND `Parent`='".$this->getFieldsArray["id"]."' ORDER BY `Por`;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows())
//		{
//			$param = array();
//			$i=0;
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
//				unset($image_tmp);			
//				$image_tmp = functions::getImage("cars", $p["id"], '', 1, "84x40_highlights_main_trumbnail.jpg", "background", "md5");
//				if(!empty($image_tmp)) {
//					$p["image_preview"] = $image_tmp;
//				}
//				unset($image_tmp);			
//				$image_tmp = functions::getImage("cars", $p["id"], '', 1, "highlights_main_original.jpg", "background", "md5");
//				if(!empty($image_tmp)) {
//					$p["image_original"] = $image_tmp;
//				}
//				$param[$i] = $p; 
//				
//				/* Хайлайты текущего раздела */
//				if($i == 0) {
//					$param[$i]["highlights"] = self::getHighlightParam($p["id"]);
//				}
//				$i++;
//			}
//			return $param;
//		}
//	}
	
	/* 
	 * Документы
	 */
//	public function getDocumentsParam() {
//		$out["image_head"] = functions::getImage("cars", $this->dependences[1]["id"], '', 1, "documents_head.jpg", "background", "md5");
//		$out["name"]       = $this->dependences[1]["name"];
//		/* Получаем список документов */
//		$r = & Registry::get("MDB")->query("SELECT `Name`,`ID` FROM `".$this->table_module."` WHERE `Show` = '1' AND `Parent`='".$this->dependences[1]["id"]."' AND `Section_type` = 'documents' ORDER BY `Por`;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows())
//		{
//			$i = 0;
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC))
//			{
//				$out["documents"][$i]["documents_trumbnail"] = functions::getImage("cars", $p["id"], '', 1, "56x78_documents_trumbnail.jpg", "background", "md5");			
//				$out["documents"][$i]["documents_name"]      = $p["name"];				
//				$out["documents"][$i]["file"] = File::getFiles(array(
//					'id'      => $p["id"],
//					'name'    => $p["name"],
//					'postfix' => 'documents_tech_features',
//					'folder'  => "cars",
//					'limit'   => 1,
//				));				
//				$i++;
//			}			
//		}
//		return $out;
//	}
	 
	/********************************/
	/****** START КОМПЛЕКТАЦИИ ******/
	/********************************/
//	public function getCompleteParamFirst() {
//		$r = & Registry::get("MDB")->query("SELECT `Name`,`sys_name`,`Btext`,`ID`,`Price_from` FROM `".$this->table_module."` WHERE `Show` = '1' AND `Parent`='".$this->dependences[1]["id"]."' AND `Section_type` = 'complete' ORDER BY `Por`;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows())
//		{
//			$i = 0;
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC))
//			{
//				$out["items"][$i]["name"]       = $p["name"];				
//				$out["items"][$i]["btext"]      = $p["btext"];
//				$out["items"][$i]["sys_name"]   = $this->parts[2]."/".$this->parts[3]."/".$p["sys_name"];
//				$out["items"][$i]["price_from"] = functions::numberformat($p["price_from"], 2, ',');
//				$out["items"][$i]["image"]      = functions::getImage("cars", $p["id"], '', 1, "215x102_complete_trumbnail.jpg", "background", "md5");
//				$out["items"][$i]["is_active"]  = (($p["sys_name"] == $this->parts[4]) ? 1 : 0);				
//				$i++;
//			}
//			$out["current_compare"] = $this->parts[2]."/".$this->parts[3];
//			return $out;
//		}
//	}	
//	/* 
//	 * Получаем опции каждой комплектации
//	 * 
//	 */
//	public function getCompleteOption($id, $type) {	
//		$r = & Registry::get("MDB")->query("SELECT MD5(Parent) as `Parent`, `Name`,`Text` FROM `".PRFX."cars_options` WHERE MD5(Parent) = '".$id."' AND `Type` = '".$type."' ORDER BY `ID`;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows())
//		{			
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
//				$array[] = array(
//					"name" => $p["name"],
//					"text" => functions::deleteSpecialSimbols($p["text"])
//				);
//			}
//			return $array;
//		}
//	}
//	/*
//	 * Получаем список всех комплектаций ($parent = родительская группа, $type = выбор по конкретному двигателю)
//	 * $type = 6 (Бензиновый)
//	 * $type = 7 (Дизельный)
//	 * @return Array
//	 */
//	public function getCompleteList($parent, $type = false) {
//		$r = & Registry::get("MDB")->query("SELECT `ID`,`Name`,`Engine` FROM `".$this->table_module."` WHERE `Show` = '1' AND `Parent`='".$parent."'".($type ? " AND `Engine` = '".$type."'" : "")." AND `Section_type` = 'complete' ORDER BY `Por`;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows()) {
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
//				if($p["engine"]) {
//					$arr[$p["engine"]][md5($p["id"])] = $p["name"];					
//				}
//			}			
//			return $arr;
//		}
//	}	
//	/*
//	 * Список имеющихся двигателей 
//	 * (дизельный, бензиновый)
//	 * @return Array
//	 */
//	private function getListExistsEngine($id_engine = false) {
//		$r = & Registry::get("MDB")->query("SELECT `ID`,`Name` FROM `".PRFX."lists` WHERE `Show` = '1' AND `Parent`='36'".($id_engine ? " AND `ID`='".$id_engine."'" : "")." ORDER BY `Por`;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows()) {
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
//				$arr[$p["id"]] = $p["name"];					
//			}
//			return $arr;
//		}		
//	}	
//	/*
//	 * Флаг нахождения комплектаций
//	 * true - есть вложенные комплектации
//	 * false - нет
//	 */
//	private function getFlagExistsCompletes() {
//		$r = & Registry::get("MDB")->query("SELECT * FROM `".$this->table_module."` WHERE `Show` = '1' AND `Parent`='".$this->dependences[2]["id"]."' AND `Section_type` = 'complete' ORDER BY `Por` LIMIT 1;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows()) 
//		{
//			$p = $r->fetchRow(MDB2_FETCHMODE_ASSOC);			
//			/* Список комплектаций :: JSON */
//			$option_list_complete = self::getCompleteList($this->dependences[2]["id"]);
//			$out["option_list_complete"] = getJSON($option_list_complete);			
//			/* Список опций */
//			foreach($option_list_complete as $KeyTypeEngine => $ArrayComplete) {
//				foreach($ArrayComplete as $IdHash => $Name) {
//					$standart[$IdHash]     = self::getCompleteOption($IdHash, "standart");
//					$additionally[$IdHash] = self::getCompleteOption($IdHash, "additionally");				
//				}
//			}
//			$out["current_option_standart"]     = getJSON($standart);
//			$out["current_option_additionally"] = getJSON($additionally);				
//			/* Тип двигателя :: JSON */
//			$out["current_engine_radio"] = getJSON(self::getListExistsEngine());			
//			return $out;
//		}
//		return false;
//	}
//	
//	public function getCompleteParamSecond() {
//		$out["all_complete"]  = self::getCompleteParamFirst();		
//		$out["current_name"]  = $this->getFieldsArray["name"];
//		$out["current_btext"] = $this->getFieldsArray["btext"];
//		$out["current_compare"] = $this->parts[2]."/".$this->parts[3];
//		$out["current_backlink"] = $this->parts[2]."/".$this->parts[3];
//		$out["current_md5_id"] = md5($this->getFieldsArray["id"]);
//		$out["current_price_from"] = functions::numberformat($this->getFieldsArray["price_from"]);
//		$out["current_price_to"] = functions::numberformat($this->getFieldsArray["price_to"]);
//		$out["current_image"] = functions::getImage("cars", $this->getFieldsArray["id"], '', 1, "complete_original.jpg", "normal", "md5");
//		/* Детект на наличие вложенных записей (двигатели) */
//		$array_completes = self::getFlagExistsCompletes();
//		/* Нет вложенных комплектаций */
//		if(!$array_completes) {			
//			$out["current_option_standart"] = self::getCompleteOption(md5($this->getFieldsArray["id"]), "standart");
//			$out["current_option_additionally"] = self::getCompleteOption(md5($this->getFieldsArray["id"]), "additionally");			
//		}
//		/* Есть комплектации */
//		else {
//			$out = array_merge($array_completes, $out);
//		}
//		
//		return $out;
//	}	
	/********************************/
	/******** END КОМПЛЕКТАЦИИ ******/
	/********************************/
	
	/* 
	 * Сравнение комплектаций 
	 * @return array
	 */
//	private function getCompleteListCompare($id) {
//		$r = & Registry::get("MDB")->query("SELECT `ID`,`Name`,`Sys_name`,`Price_from` FROM `".$this->table_module."` WHERE `Show` = '1' AND `Parent`='".$id."' AND `Section_type` = 'complete' ORDER BY `Por`;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows()) {
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
//				self::getAllThisEnginesCompare($p["id"], $all_this_engines, &$all_this_options);
//				$arr[md5($p["id"])] = array(
//					"name" => $p["name"],
//					"sys_name" => $p["sys_name"],
//					"image_137x65" => functions::getImage("cars", $p["id"], '', 1, "137x65_complete_trumbnail.jpg", "background", "md5"),
//					"image_215x102" => functions::getImage("cars", $p["id"], '', 1, "215x102_complete_trumbnail.jpg", "background", "md5"),
//					"price_from" => functions::numberformat($p["price_from"], 2, ','),
//					/* Движки */
//					"all_this_engines" => $all_this_engines,
//					"all_this_options" => $all_this_options
//				);				
//			}			
//			return $arr;
//		}
//	}
//	private function getAllThisEnginesCompare($id, &$engines, &$option_list) {
//		$r = & Registry::get("MDB")->query("SELECT MD5(ID) as `ID`,`Name` FROM `".$this->table_module."` WHERE `Show` = '1' AND `Parent`='".$id."' AND `Section_type` = 'complete' ORDER BY `Por`;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows()) {
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
//				$engines[$p["id"]] = $p["name"];
//				$option_list[$p["id"]] = self::getCompleteOptionParseToArray($p["id"]);
//			}
//		}
//	} 
	
	/* 
	 * Парсим опции каждой комплектации (LI ТЕГИ) 
	 */
/*	private function parseLiToArray($text) {
		preg_match_all('/(<li \w*>)(.*)(<\/li>)/ismxU', $text, $patterns);  
		return $patterns[2];  
	} */
	/*
	 * Создаем массив опций
	 */
//	public function getCompleteOptionParseToArray($id) {	
//		$r = & Registry::get("MDB")->query("SELECT MD5(Parent) as `Parent`, `Name`,`Text`,`Type` FROM `".PRFX."cars_options` WHERE MD5(Parent) = '".$id."' ORDER BY `ID`;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows())
//		{			
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
//				$array[] = array(
//					"name"  => $p["name"],
//					"items" => self::parseLiToArray(functions::deleteSpecialSimbols($p["text"])),
//					"type"  => $p["type"]					
//				);
//			}
//			return $array;
//		}
//	}
//	 
//	public function getCompare() {
//		$out["link_to_complete"]  = $this->parts[2]."/".$this->parts[3];
//		$out["parts_model_name"]  = $this->parts[2];
//		$out["parts_complete_id"] = $this->parts[5];
//		
//		//print_r($this->parts);
//		
//		$all_complete = self::getCompleteListCompare($this->dependences[1]["id"]);
//		$out["all_complete"] = $all_complete;
//		$out["all_complete_JSON"] = getJSON($all_complete);
//		
//	   // print_r($out);		
//			
//		return $out;
//	}
//	
//	
//	/* Пресса */
//	public function getPressParam()
//	{
//		$r = & Registry::get("MDB")->query("SELECT `ID`,`Name`,`Stext`,`Source`,`Date`,`Redirect` FROM `".PRFX."cars` WHERE `Parent`='".$this->getFieldsArray["id"]."' AND `Show` = '1' ORDER BY `Date` DESC;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows())
//		{			
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
//				$p["image"] = functions::getImage("cars", $p["id"], $p["name"], 1, "215x102_press_trumbnail.jpg", "normal", "md5");	
//				$p["date"]  = strtotime($p["date"]);
//				$p["stext"] = nl2br($p["stext"]);
//				$p["redirect"] = $p["redirect"];
//				$p["file"]  = File::getFiles(array(
//					'id'      => $p["id"],
//					'name'    => $p["name"],
//					'postfix' => 'documents_press',
//					'folder'  => "cars",
//					'limit'   => 1
//				));
//				$array[] = $p;
//			}
//			return $array;
//		}
//	}	
//	
//	/* Спецпредложения */
//	public function getSpecialParamFirst() {
//		$r = & Registry::get("MDB")->query("SELECT `ID`,`Sys_name`,`Name`,`Stext` FROM `".PRFX."news` WHERE `Parent`='29' AND `Model`='".$this->dependences[0]["id"]."' AND `Show` = '1' ORDER BY `Date` DESC;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows())
//		{			
//			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
//				$out[] = array(
//					"image"    => functions::getImage("news", $p["id"], $p["name"], 1, "215x102_news_trumbnail.jpg", "normal", "md5"),
//					"name"     => $p["name"],
//					"stext"    => $p["stext"],
//					"sys_name" => $this->parts[2]."/".$this->parts[3]."/".$p["sys_name"],
//					"is_active" => (($this->parts[4] == $p["sys_name"]) ? 1 : 0)
//				);
//			}
//			return $out;
//		}
//	}
//	public function getSpecialParamSecond() {
//		$out["LIST"] = self::getSpecialParamFirst();
//		$r = & Registry::get("MDB")->query("SELECT * FROM `".PRFX."news` WHERE `Parent`='29' AND `Model`='".$this->dependences[0]["id"]."' AND `Sys_name` = '".$this->parts[4]."' AND `Show` = '1' LIMIT 1;");
//		if (PEAR::isError($r)) {
//			die($r->getMessage().' ::: '.$r->getUserInfo());
//		}
//		if ($r->numRows()) {			
//			$p = $r->fetchRow(MDB2_FETCHMODE_ASSOC);
//			$out["ITEM"]["image"] = functions::getImage("news", $p["id"], $p["name"], 1, "news_original.jpg", "normal", "md5");
//			$out["ITEM"]["name"]  = $p["name"];
//			$out["ITEM"]["btext"] = $p["btext"];			
//		}
//		return $out;
//	}

	public function getReviewParam() 
	{
		$r = & Registry::get("MDB")->query("SELECT `Name`,`Sys_name`,`Btext` FROM `".$this->table_module."` WHERE `Show` = '1' AND `Parent`='".$this->active_id."' ORDER BY `Por`;");
		if(PEAR::isError($r)) {
			die($r->getMessage().' ::: '.$r->getUserInfo());
		}
		if($r->numRows())
		{
			while($p = $r->fetchRow(MDB2_FETCHMODE_ASSOC)) {
				$out["sections"][] = $p;
			}		
			/*for($i=1;$i<=20;$i++)
			{				
				$image_tmp = functions::getImage("cars", $p["id"], '', $i, "review_original.jpg", "background", "md5");
				if(!empty($image_tmp)) {
					$image["big"][$i] = $image_tmp;
				}
				unset($image_tmp);
				$image_tmp = functions::getImage("cars", $p["id"], '', $i, "160x160_review_trumbnail.jpg", "background", "md5");
				if(!empty($image_tmp)) {
					$image["small"][$i] = $image_tmp;
				}
			}			
			$p["image"] = $image;*/		
								
			return $out;
		}
		else 
		{
			$r_2 = & Registry::get("MDB")->query("SELECT `Name`,`ID`,`Sys_name`,`Btext` FROM `".$this->table_module."` WHERE `Show` = '1' AND `ID`='".$this->active_id."' ORDER BY `Por`;");
			if(PEAR::isError($r_2)) {
				die($r_2->getMessage().' ::: '.$r_2->getUserInfo());
			}
			if($r_2->numRows()) {			
				$p = $r_2->fetchRow(MDB2_FETCHMODE_ASSOC);
				return $p;
			}
		}
	}
			
    public function out()
	{		
		//print_r($this->dependences);
		/* Главная моделей */
		if(empty($this->parts[2])) {
			$out["HEADER"] = "Модели";
			$out["HEADER_HREF"] = "/cars.html";
			$out["MAIN_CAR"] = self::main_cars();
		}	
		elseif(!empty($this->parts[2]))
		{
			$out["HEADER"] = $this->dependences[0]["name"];
			$out["HEADER_HREF"] = "/cars/".$this->dependences[0]["sys_name"].".html";
			$out["CAR_MENU"] = self::getSubmenuModel($this->dependences[0]["id"]);
			$out["PARTS"] = $this->parts;			
			$out["TOP_IMAGE"] = functions::getImage("cars", $this->dependences[0]["id"], $this->dependences[0]["name"], 1, "280x152_model_trumbnail.jpg", "normal", "md5");
			$out["TOP_TEXT"] = $this->dependences[0]["text_top"];									
			$out["SELECT_LIST_MODEL"] = self::select_cars();

			if($this->getFieldsArray["section_type"] == 'default') {
				$out["MAIN_TEXT"] = $this->getFieldsArray["btext"];
				$out["RIGHT_TEXT"] = $this->dependences[0]["text_right"];
			}		
			elseif($this->getFieldsArray["section_type"] == 'gallery') {
				$out["GALLERY"] = self::getGalleryParam();
				$out["GALLERY_TEXT"] = $this->getFieldsArray["btext"];
				$out["RIGHT_TEXT"] = $this->dependences[0]["text_right"];
			}
			/* Обзор */
			elseif($this->getFieldsArray["section_type"] == 'review') {
				$out["REVIEW"] = self::getReviewParam();				
			}		
		}
		
		Registry::set("title", functions::createTitle(($this->dependences ? array($this->dependences[0]["name"]) : array($this->common_vars["structure_name"])), $this->getFieldsArray["title"]));
			
		// print_r($out);
		Registry::get("smarty")->assign($out);
		return Registry::get("smarty")->fetch(TEMPLATE_SITE.$this->common_vars["controller_template"], Registry::get("cache_id"));     
    }
}

$controller = new Controller_Cars($parts);
$site_module_out = $controller->out();

?>